importlib 模块: 通过字符串的形式导入对应的包或模块
注意: 只能导入到包或模块的级别,不能导入模块中的具体变量或方法
1. importlib的基本使用
# 总体的目录结构
├── importlib_demo
│ ├── i_package # 包
│ │ ├── __init__.py
│ │ └── xx.py
│ └── i_d.py # 引入包的脚本文件
# importlib_demo/i_package/xx.py
name = 'Kevin'
def sum_num():
return 1 + 2
- importlib.import_module('包名.包名.模块名')
# i_d.py
import importlib
x = importlib.import_module('i_package.xx') # 只能导入到包或模块的级别,不能导入模块中的具体变量或方法
print(x.name) # Kevin
print(x.sum_num()) # 3
- 通过字符串路径导入包或模块里面的变量
# i_package/xx.py
data = 'xx的变量'
# i_d.py
import importlib
path = 'i_package.xx.data' # 字符串路径
xx_str, data_str = path.rsplit('.', maxsplit=1) # 分割路径 -> i_package.xx, data
xx = importlib.import_module(xx_str) # 通过字符串路径获取对应的模块
data = getattr(xx, data_str) # 获取模板或包中的对应变量
print(data) # xx的变量